//列表数据渲染相关方法
import moment from 'moment'

/**
 * @description 计算字段的自定义样式
 * @author Elwin ZHANG
 * @date 2024-04-01 15:52
 */
export const getStyles = (col) => {
  const style = { 'font-size': '12px' } as any
  if (col.fontSize) {
    style['font-size'] = col.fontSize
  }
  if (col.fontColor) {
    style.color = col.fontColor
  }
  if (col.bgColor) {
    style['background-color'] = col.bgColor
  }
  return style
}

//格式化显示数据
export const formatData = (data, colDef) => {
  const format = colDef.dataFormat
  //未设置格式，则返回原数据
  if (!format) {
    return data
  }
  if (!data) {
    return ''
  }
  //格式化选项，默认没有千分位，小数点为0
  const option = { useGrouping: false, maximumFractionDigits: 0, minimumFractionDigits: 0 }
  //百分数
  if (format.endsWith('%')) {
    const theFormat = format.replace('%', '')
    if (theFormat.indexOf('.') > 0) {
      const arr = theFormat.split('.')
      const precision = arr[1].length
      option.minimumFractionDigits = precision
      option.maximumFractionDigits = precision
    }
    if (theFormat.indexOf(',') > 0) {
      option.useGrouping = true
    }
    const newValue = parseFloat(data) * 100
    return newValue.toLocaleString('en', option) + '%'
  }
  //数值
  if (format.indexOf('0') >= 0) {
    if (format.indexOf('.') > 0) {
      const arr = format.split('.')
      const precision = arr[1].length
      option.minimumFractionDigits = precision
      option.maximumFractionDigits = precision
    }
    if (format.indexOf(',') > 0) {
      option.useGrouping = true
    }
    return parseFloat(data).toLocaleString('en', option)
  }
  //日期
  return moment(data).format(format)
}

//过滤掉不需要显示的列
export const filterTableColumns = (allCols) => {
  const cols = allCols.filter(
    (col) => (col.colWidth.trim() == '' || parseInt(col.colWidth) > 0) && col.fieldName != 'pkId'
  )
  return cols
}

//获取数据类型的缩写
export const getDataTypeAbbr = (type) => {
  if ('smallint' == type) {
    return 'SN'
  } else if ('int' == type) {
    return 'I'
  } else if ('bigint' == type) {
    return 'L'
  } else if ('decimal' == type) {
    return 'BD'
  } else if ('date' == type || 'datetime' == type) {
    return 'D'
  }
  return 'S'
}
//判断是否可以快速搜索（模糊匹配）
export const canSearchByKey = (cols) => {
  for (const col of cols) {
    if (col.isFilter == 1 && col.colType == 'varchar') {
      return true
    }
  }
  return false
}
